/* 
nuxt ssr 服务端渲染
  store/user.js  一开始 现在服务端 执行   nodejs 没有 window bom  localStorage


1 在 user.js 中写一些代码
  1 判断当前的运行环境
    如果 node 后台 环境 话 先不执行 user.js 里面代码
  2 如果 当前是浏览器的环境 
    再执行  user.js 中的代码  localStorage 来获取数据即可 

2 当 user.js 里面的数据 发生改变了  localStorage 里面的数据也要跟着改变 

3 难度 
  1 不在于 代码如何实现上 而是在于同学们是否可以理解 这个流程    有插件实现!!  

 */


// state 存放数据

// console.log(localStorage.getItem("adfdfdf"));// localStorage 找不到 页面报错 下一节课解释 

export const state = () => ({
  token: "",
  user: null
})

// mutations  同步 直接操作 state数据
export const mutations = {
  // 登录
  loginIn(state, data) {
    state.token = data.token;
    state.user = data.user;
  },
  // 登出
  loginOut(state) {
    state.token = "";
    state.user = null;
  }
}

// actions 负责异步操作数据 但是它也不会直接操作 而是通过 触发 mutations来修改
export const actions = {
  // context  上下文 对象 
  loginIn(context, data) {
    // 异步操作
    const promise = this.$axios.post("/accounts/login", data)
      .then(res => {
        context.commit("loginIn", res.data);

        return "123";
      })

    return promise;
  }
}


